//***********************************************************************
//	File:		Tankosaurus.h
//	Author:		
//	Course:		SGP 1405
//	Purpose:	
//***********************************************************************
//***********************************************************************
//	Purposfully left blank for all comments regarding this file 
//	
//	
//	
//***********************************************************************



#pragma once
#include "Enemy.h"
class Tankosaurus :
	public Enemy
{
public:
	Tankosaurus(float posX = -1, float posY = -1);
	//Trilogy
	~Tankosaurus() = default;
	Tankosaurus(const Tankosaurus&) = default;
	Tankosaurus& operator =(const Tankosaurus&) = default;

	//Type
	int GetType() const { return ENT_TANKOSAURUS; }

	//Interface
	void Update(float dt);
	void Render();
	void HandleCollision(const IEntity* pOther);
	void HandleEvent();
	SGD::Rectangle GetRect() const;
	void ModifyHealth(float hpAmount);
	void ApplyFriction(float dt);

	void Attack(float dt);
	void Move(void);

	//Tankosaurus specific
	void Flame();
	void Gun(); 
	void Missile(); 

	//Accessors
	float	GetGunTimer				(void)				{ return m_fGunTimer; }
	float	GetGunCDL				(void)				{ return m_fGunCDL; }
	int		GetGunProjectileType	(void)				{ return m_nGunProjectileType; }
	float	GetMissileTimer			(void)				{ return m_fMeleeTimer; }
	float	GetMissileCDL			(void)				{ return m_fMissileCDL; }
	int		GetMissileType			(void)				{ return m_nMissileType; }
	float	GetMeleeDamage			(void)				{ return m_fMeleeDamage; }
	float	GetMeleeTimer			(void)				{ return m_fMeleeTimer; }
	float	GetMeleeCDL				(void)				{ return m_fMeleeCDL; }
	int		GetFlameType			(void)				{ return m_nFlameType; }
	float	GetFlameTimer			(void)				{ return m_fFlameTimer; }
	float	GetFlameCDL				(void)				{ return m_fFlameCDL; }
	float	GetFlameDuration		(void)				{ return m_fFlameDuration; }
	float	GetGunDamage			(void)				{ return m_fGunDamage; }
	float   GetFlameDamage			(void)				{ return m_fFlameDamage; }

	//Mutators
	void   SetGunTimer				(float gt)			{ m_fGunTimer = gt; }
	void	SetGunCDL				(float gCDL)		{ m_fGunCDL = gCDL; }
	void	SetGunProjectileType	(int gpt)			{ m_nGunProjectileType = gpt; }
	void	SetMissileTimer			(float mt)			{ m_fMissileTimer = mt; }
	void	SetMissileCDL			(float mCDL)		{ m_fMissileCDL = mCDL; }
	void	SetMissileType			(int mt)			{ m_nMissileType = mt; }
	void	SetMeleeDamage			(float md)			{ m_fMeleeDamage = md; }
	void	SetMeleeTimer			(float met)			{ m_fMeleeTimer = met; }
	void	SetMeleeCDL				(float meCDL)		{ m_fMeleeCDL = meCDL; }
	void	SetFlameType			(int ft)			{ m_nFlameType = ft; }
	void	SetFlameTimer			(float ftim)		{ m_fFlameTimer = ftim; }
	void	SetFlameCDL				(float fCDL)		{ m_fFlameCDL = fCDL; }
	void	SetFlameDuration		(float fd)			{ m_fFlameDuration = fd; }
	void	SetGunDamage			(float gd)			{ m_fGunDamage = gd; }
	void	SetFlameDamage			(float fdam)		{ m_fFlameDamage = fdam; }

private:
	float		 m_fGunTimer = 0.0f; 
	float		 m_fGunCDL = 0.0f;
	int			 m_nGunProjectileType = -1; 
	float		 m_fMissileTimer = 0.0f; 
	float		 m_fMissileCDL = 0.0f; 
	int			 m_nMissileType = -1; 
	float		 m_fMeleeDamage = 0.0f; 
	float		 m_fMeleeTimer = 0.0f; 
	float		 m_fMeleeCDL = 0.0f; 
	int			 m_nFlameType = -1; 
	float		 m_fFlameTimer = 0.0f; 
	float		 m_fFlameCDL = 0.0f; 
	float		 m_fFlameDuration = 0.0f; 
	float		 m_fGunDamage = 0.0f; 
	float		 m_fFlameDamage = 0.0f; 
};

